﻿using System;
using System.Collections;

namespace ConsoleApp1
{
    class Program
    {
        static void Main(string[] args)
        {
            ArrayList list1 = new ArrayList() { 1, 2, 3, 4, 2 };
            //查找集合中的元素，使用 IndexOf或者LastlndexOf，不存在返回的都是-1
            int index = list1.IndexOf("abc");
            if (index != -1)
            {
                Console.WriteLine("集合中存在abc");
            }
            else
            {
                Console.WriteLine("集合中不存在abc");
            }


            //将集合中下标为偶数的元素添加到另一个集合中 本次添加的是1，3，2
            ArrayList list2 = new ArrayList();
            for (int i = 0; i < list1.Count; i = i + 2)
            {
                list2.Add(list1[i]);
            }
            foreach (var v in list2)
            {
                Console.WriteLine(v);
            }


            /* 在集合中的第一个元素后面添加元素，
             使用 Insert 方法每次只能添加一个元素，
             但使用 InsertRange 方法能直接将一个集合插入到另一个集合中*/

            //Insert方法    这里1指的是集合的下标，从下标为1开始，原本为1和1以后所有元素往后移
            list1.Insert(1, 9);
            foreach (var io in list1)
            {
                Console.WriteLine(io);
            }

            //InsertRange方法  
            ArrayList list3 = new ArrayList() { 7, 8, 9 };
            //这里1指的是集合的下标  从下标为1开始，原本为1和1以后所有元素往后移
            list1.InsertRange(1, list3);
            foreach (var v in list1)
            {
                Console.WriteLine(v);
            }


            //Sort 方法排序  这里Sort方法将集合中的元素按照字母的ASCII码从小到大排序，相当于字母的顺序。 需同一类型才可比较  数字也可比较排序
            ArrayList list4 = new ArrayList() { "aaa", "bbb", "abc" };
            list4.Sort();
            foreach (var v in list4)
            {
                Console.WriteLine(v);
            }

            //自定义比较器类 MyCompare   没有在集合中指定统一的数据类型，需要用自定义比较器来完成排序
            ArrayList list = new ArrayList() { "a", "b", "c", 1, 2 };
            //创建自定义比较器实例
            MyCompare myCompare = new MyCompare();
            list.Sort(myCompare);
            foreach (var v in list)
            {
                Console.WriteLine(v);
            }
        }
    }
}
